package com.iflytek.service.impl;

import com.iflytek.mapper.EmpMapper;
import com.iflytek.pojo.Emp;
import com.iflytek.service.EmpService;
import com.iflytek.utils.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;

@Service
public class EmpServiceImpl implements EmpService {
    // 拿到 sqlSessionFactory 对象,注意可能代码不提示
    /*
    <!--把SqlSessionFactory交给Spring管理-->
    import org.springframework.stereotype.Service; // 它只能管理spring 而不能管理 mybatis
    重点：这里不能直接加 @Autowired 注解，需要将spring 和 mybatis 在spring-config.xml 配置文件配置之后，该
    注解才能生效
     */
    //    SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory(); 这是自己管理的!! ,我们不用

    // 来源于 Map层的 selAllEmp()方法
    // 实现 EmpService 接口中的方法
    @Autowired
    private EmpMapper empMapper;

    public List<Emp> findAllEmp() throws Exception {
        // 调用静态方法拿到sqlSessionFactory 对象,会读取mybatis配置文件
        // 方法1自己管理sqlSessionFactory
//        SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
//        SqlSession sqlSession = sqlSessionFactory.openSession();
//        List<Emp> emps = sqlSession.selectList("selAllEmp");
        List<Emp> emps = empMapper.selAllEmp();
        return emps;
    }
    // 实现动态sql
    // 联合查询
    public List<Emp> selAllEmp() throws Exception {
        List<Emp> emps = empMapper.selAllEmp();
        return emps;
    }
    // 改写方法 实现分页
    @Override
    public List<Emp> getAllEmp(Integer page, Integer limit) throws Exception {
        // 分页核心思想
        int begin = (page - 1) * limit;
        List<Emp> emps = empMapper.getAllEmp(begin, limit);
        // 手写让他返回为空，我丢
        return emps;
    }

    public List<Emp> selEmpByJobOrSal(Emp emp) throws Exception {
        List<Emp> emps = empMapper.selEmpByJobOrSal(emp);
        return emps;
    }

    @Override
    public void updEmpByEmpno2(Emp emp) throws Exception {
        int s = empMapper.updEmpByEmpno2(emp);
        String msg = "";
        if (s > 0) {
            msg = s + ":修改成功";
        } else {
            msg = s + ":修改失败";
        }
        System.out.println(msg);
    }

    public List<Emp> selectBy(HashMap<String, Object> params) {

        List<Emp> emps = empMapper.selectBy(params);
        return emps;
    }

    // 获取员工数量
    @Override
    public int getCount() {
        return empMapper.getCount();
    }

    @Override
    public void addEmp(Emp emp) throws Exception {
        // 注意 一定要调用方法 实现方法
        empMapper.addEmp(emp);
    }

    @Override
    public void updateEmp(Emp emp) {
        empMapper.updateEmp(emp);
    }

    @Override
    public void deleteEmp(Emp emp) throws Exception {
        empMapper.deleteEmp(emp);
    }

    @Override
    public List<Emp> searchEmp(Emp num) throws Exception {
        List<Emp> emps = empMapper.searchEmp(num);
        // 返回结果
        return emps;
    }

}
